// 
// Bachelor of Software Engineering
// Media Design School
// Auckland
// New Zealand
//
// (c) 2005 - 2014 Media Design School
//
// File Name	: LerpStack.h
// Desrciption	: CLerpStack declaration file.
// Author(s)	: Hayden Asplet.
// Mail			: hayden.asplet@mediadesignschool.com
//

#pragma once

#ifndef __LERPCARD_H__
#define __LERPCARD_H__

// Library Includes

// Local Includes
#include "PlayingCard.h"
#include "CardStack.h"
/*
class CLerpCard : public CPlayingCard {
	// Member Functions
public:
	CLerpCard();
	CLerpCard(const CPlayingCard& _krCard, float _fWaitTime, float _fMovementTime, CCardStack* _pDestinationStack);

	~CLerpCard();

	void Update(float _fDeltaTime);
	void PushOntoDest();	// Pushes the card onto the destination immediately, this should only be called once
							// this card reaches the front of the queue.

	bool IsInPlace() const;
protected:
private:

	// Member Variables
public:
protected:
private:
	float m_fElapsedTime;	// The time elapsed since this card was created.
	float m_fWaitTime;		// The time to wait before beggining movement.
	float m_fMovementTime;	// The time it will take to reach destination, after wait time is over.
	CPoint m_startPosition;	// The position the lerp started at.

	CCardStack* m_pDestinationStack;	// The stack this card is going to.
};
*/

class CLerpStack : public CCardStack {
	// Member Functions
public:
	CLerpStack(const CCardStack& _krStack, 
			   CCardStack* _pDestinationStack, 
			   float _fWaitTime = 0.0f,
			   bool _bFlipOnceDone = false,
			   float _fMovementSpeed = g_kfSTANDARD_LERP_SPEED);

	CLerpStack(const CPlayingCard& _krCard, 
			   CCardStack* _pDestinationStack, 
			   float _fWaitTime = 0.0f,
			   bool _bFlipOnceDone = false,
			   float _fMovementSpeed = g_kfSTANDARD_LERP_SPEED);

	~CLerpStack();

	void Update(float _fDeltaTime);
	void PushOntoDest();	// Pushes the card onto the destination immediately, this should only be called once
							// this card reaches the front of the queue.

	bool IsInPlace() const;
protected:
private:

	// Member Variables
public:
protected:
private:
	float m_fElapsedTime;	// The time elapsed since this card was created.
	float m_fWaitTime;		// The time to wait before beggining movement.
	float m_fMovementSpeed;	// The speed at which the card moves.
	bool m_bFlipOnceDone;

	CPoint m_startPosition;	// The position the lerp started at.
	CPoint m_endPosition;	// The destination positon.

	CCardStack* m_pDestinationStack;	// The stack this card is going to.
};

#endif